0 REM To Disable lock out feature delete line # 1 My backdoor was to select 1) from menu then enter "A.1 Code" Exactly like that.......Eddy!<CTRL-J>(See line 205)
1 POKE 1010,102: POKE 1011,213: POKE 1012,112
2 ONERR GOTO 9000
3 GOSUB 8000
5 GOSUB 5000
10 CLEAR : REM Start Main Body<CTRL-J>
20 HOME : PRINT "THE BASE CONVERTER (C) 1985": PRINT "A.1 SOFTWARE INC.": PRINT : PRINT "WHICH CONVERSION WILL WE BE MAKING?": PRINT : PRINT "////////////////////////////////////////"
50 PRINT : PRINT "1) HEXIDECIMAL TO DECIMAL": PRINT : PRINT "2) DECIMAL TO HEXIDECIMAL": PRINT : PRINT "3) BINARY TO DECIMAL"
60 PRINT : PRINT "4) DECIMAL TO BINARY": PRINT : PRINT "5) HEXIDECIMAL TO BINARY": PRINT : PRINT "6) BINARY TO HEXIDECIMAL": PRINT : PRINT "7) QUIT"
80 PRINT " #8 FOR HELP";: PRINT
100 VTAB 23: PRINT "SELECT NUMBER #9 FOR TUTOR";: PRINT "";
110 GET L%
120 IF L% <1 OR L% >9 THEN 110
150 ON L% GOTO 200,400,600,800,1000,1200,1400,5000,8100
225 IF X7$ < >"0" AND X7$ < >"1" AND X7$ < >"2" AND X7$ < >"3" AND X7$ < >"4" AND X7$ < >"5" AND X7$ < >"6" AND X7$ < >"7" AND X7$ < >"8" AND X7$ < >"9" THEN 3000
227 X7 = VAL(X7$)
230 Y7 = X7 *16 ^7:X6$ = MID$ (ST$,2,1)
238 IF X6$ = "A" THEN X6 = 10: GOTO 260
240 IF X6$ = "B" THEN X6 = 11: GOTO 260
242 IF X6$ = "C" THEN X6 = 12: GOTO 260
244 IF X6$ = "D" THEN X6 = 13: GOTO 260
246 IF X6$ = "E" THEN X6 = 14: GOTO 260
248 IF X6$ = "F" THEN X6 = 15: GOTO 260
250 IF X6$ < >"0" AND X6$ < >"1" AND X6$ < >"2" AND X6$ < >"3" AND X6$ < >"4" AND X6$ < >"5" AND X6$ < >"6" AND X6$ < >"7" AND X6$ < >"8" AND X6$ < >"9" THEN 3000
252 X6 = VAL(X6$)
260 Y6 = X6 *16 ^6:X5$ = MID$ (ST$,3,1)
266 IF X5$ = "A" THEN X5 = 10: GOTO 282
268 IF X5$ = "B" THEN X5 = 11: GOTO 282
270 IF X5$ = "C" THEN X5 = 12: GOTO 282
272 IF X5$ = "D" THEN X5 = 13: GOTO 282
274 IF X5$ = "E" THEN X5 = 14: GOTO 282
276 IF X5$ = "F" THEN X5 = 15: GOTO 282
278 IF X5$ < >"0" AND X5$ < >"1" AND X5$ < >"2" AND X5$ < >"3" AND X5$ < >"4" AND X5$ < >"5" AND X5$ < >"6 " AND X5$ < >"7" AND X5$ < >"8" AND X5$ < >"9" THEN 3000
280 X5 = VAL(X5$)
282 Y5 = X5 *16 ^5:X4$ = MID$ (ST$,4,1)
288 IF X4$ = "A" THEN X4 = 10: GOTO 304
290 IF X4$ = "B" THEN X4 = 11: GOTO 304
292 IF X4$ = "C" THEN X4 = 12: GOTO 304
294 IF X4$ = "D" THEN X4 = 13: GOTO 304
296 IF X4$ = "E" THEN X4 = 14: GOTO 304
298 IF X4$ = "F" THEN X4 = 15: GOTO 304
300 IF X4$ < >"0" AND X4$ < >"1" AND X4$ < >"2" AND X4$ < >"3" AND X4$ < >"4" AND X4$ < >"5" AND X4$ < >"6" AND X4$ < >"7" AND X4$ < >"8" AND X4$ < >"9" THEN 3000
302 X4 = VAL(X4$)
304 Y4 = X4 *16 ^4:X3$ = MID$ (ST$,5,1)
310 IF X3$ = "A" THEN X3 = 10: GOTO 326
312 IF X3$ = "B" THEN X3 = 11: GOTO 326
314 IF X3$ = "C" THEN X3 = 12: GOTO 326
316 IF X3$ = "D" THEN X3 = 13: GOTO 326
318 IF X3$ = "E" THEN X3 = 14: GOTO 326
320 IF X3$ = "F" THEN X3 = 15: GOTO 326
322 IF X3$ < >"0" AND X3$ < >"1" AND X3$ < >"2" AND X3$ < >"3" AND X3$ < >"4" AND X3$ < >"5" AND X3$ < >"6" AND X3$ < >"7" AND X3$ < >"8" AND X3$ < >"9" THEN 3000
324 X3 = VAL(X3$)
326 Y3 = X3 *16 ^3:X2$ = MID$ (ST$,6,1)
332 IF X2$ = "A" THEN X2 = 10: GOTO 348
334 IF X2$ = "B" THEN X2 = 11: GOTO 348
336 IF X2$ = "C" THEN X2 = 12: GOTO 348
338 IF X2$ = "D" THEN X2 = 13: GOTO 348
340 IF X2$ = "E" THEN X2 = 14: GOTO 348
342 IF X2$ = "F" THEN X2 = 15: GOTO 348
344 IF X2$ < >"0" AND X2$ < >"1" AND X2$ < >"2" AND X2$ < >"3" AND X2$ < >"4" AND X2$ < >"5" AND X2$ < >"6" AND X2$ < >"7" AND X2$ < >"8" AND X2$ < >"9" THEN 3000
346 X2 = VAL(X2$)
348 Y2 = X2 *16 ^2:X1$ = MID$ (ST$,7,1)
354 IF X1$ = "A" THEN X1 = 10: GOTO 370
356 IF X1$ = "B" THEN X1 = 11: GOTO 370
358 IF X1$ = "C" THEN X1 = 12: GOTO 370
360 IF X1$ = "D" THEN X1 = 13: GOTO 370
362 IF X1$ = "E" THEN X1 = 14: GOTO 370
364 IF X1$ = "F" THEN X1 = 15: GOTO 370
366 IF X1$ < >"0" AND X1$ < >"1" AND X1$ < >"2" AND X1$ < >"3" AND X1$ < >"4" AND X1$ < >"5" AND X1$ < >"6" AND X1$ < >"7" AND X1$ < >"8" AND X1$ < >"9" THEN 3000
368 X1 = VAL(X1$)
370 Y1 = X1 *16 ^1:X0$ = MID$ (ST$,8,1)
376 IF X0$ = "A" THEN X0 = 10: GOTO 392
378 IF X0$ = "B" THEN X0 = 11: GOTO 392
380 IF X0$ = "C" THEN X0 = 12: GOTO 392
382 IF X0$ = "D" THEN X0 = 13: GOTO 392
384 IF X0$ = "E" THEN X0 = 14: GOTO 392
386 IF X0$ = "F" THEN X0 = 15: GOTO 392
388 IF X0$ < >"0" AND X0$ < >"1" AND X0$ < >"2" AND X0$ < >"3" AND X0$ < >"4" AND X0$ < >"5" AND X0$ < >"6" AND X0$ < >"7" AND X0$ < >"8" AND X0$ < >"9" THEN 3000
5020 PRINT : PRINT "HELLO!": PRINT : PRINT "WELCOME TO THE A.1 BASE CONVERTER.": PRINT : PRINT " THIS PROGRAM WILL CHANGE FROM ONE BASE NUMBER SYSTEM TO ANOTHER. YOUR KNOWLEDGE OF THESE SYSTEMS IS NOT REQUIRED."
5030 PRINT : PRINT " CONVERSIONS #1, 3, 5, AND 6 ": PRINT "REQUIRE AN EIGHT DIGIT INPUT EVEN IF": PRINT "THE FIRST SEVEN DIGITS ARE ZEROES."
5040 PRINT : PRINT " BINARY NUMBERS CONTAIN ONLY ZEROES &": PRINT "ONES. HEXI CONTAINS A,B,C,D,E, AND F.": PRINT "IN ADDITION TO THE STANDARD 0-9 SET."
5045 PRINT " USE ONLY WHOLE NUMBERS PLEASE.": PRINT : PRINT "LOCK CAPS LOCK NOW......";: INVERSE : PRINT "PLEASE": NORMAL
5047 PRINT : PRINT "PRESS j TO CONTINUE!";
5049 GET QA$
5050 IF QA$ < >"J" THEN PRINT B$;: GOTO 5049
5051 HOME : PRINT : INVERSE : PRINT " PLEASE NOTE THE FOLLOWING DATA LIMITS": PRINT "OF THE BASE CONVERTER.": PRINT : NORMAL : PRINT " HEXI NUMBERS TO FFFFFFFF MAY BE USED,": PRINT "HOWEVER, THOSE ABOVE 3B9ACA00 ARE": PRINT "APPROXIMATE.
5053 PRINT : PRINT " THE LARGEST DECIMAL NUMBER THAT CAN BE": PRINT "CONVERTED TO HEXI IS 4,294,967,295.": PRINT : PRINT " THE LARGEST DECIMAL NUMBER THAT CAN": PRINT "BE CONVERTED TO BINARY IS 65,535."
5055 PRINT : PRINT " PROGRAM WILL NOT ACCEPT COMMAS,": PRINT "SAVE THEM FOR PAPERWORK,": PRINT " DISPLAY-SCREENS, ETC,"
5070 PRINT
5075 PRINT "DO NOT USE THE LETTER O INPLACE OF 0'S"
5090 VTAB 23: PRINT "PRESS ANY KEY TO SEE MAIN MENU.";
8100 REM <CTRL-J>For Creation of Basic Number System Tutor.<CTRL-J><CTRL-J>
8140 PRINT CHR$(4);"pr#3"
8150 PRINT : PRINT CHR$(18): HOME : PRINT " There are Probably as many different numbering systems, as there are numbers. ";: PRINT "Our Text Will Only Focus on Three: 1) Decimal 2) Hexidecimal 3) Binary "
8160 PRINT : PRINT " Our ordinary everyday numbering system is DECIMAL.";: PRINT " Probably because we have ten Fingers. (well eight fingers and two thumbs.)";
8170 PRINT " Our Decimal Symbols are 0,1,2,3,4,5,6,7,8,9";: PRINT " When we count, we go through all symbols before adding an additional digit and resetting previous digit.";
8180 PRINT " For instance after 9 comes 10. The ones column is reset, and the tens column is added with the first symbol holding the column open.";
8185 PRINT " (";: FOR X = 0 TO 9: PRINT X", ";: NEXT X: PRINT " & then 10)";
8190 PRINT : PRINT : PRINT " The need was soon seen for a shortened version of our system for computer applications.";: PRINT " The goal you see, is to represent the higher numbers 0-255:"
8195 PRINT "While using only two digits.(ie. FF Hexi.)";
8200 PRINT " This shortened numbering system is called HEXIDECIMAL.";
8210 PRINT " Hexi, as it is often referred to, has sixteen symbols."
8220 PRINT "They are: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F."
8230 PRINT "The HEXI number 10' is not one set of ten units as in decimal, But one set of 16 units. Thus the HEXI number B is the eleventh digit represented.";
8235 GOSUB 8240: GOTO 8250
8240 PRINT : VTAB 22: PRINT "Press any Key for more.";: GET K$: RETURN
8250 HOME : PRINT : PRINT SPC( 5)"The Hexi equivalent of 100 is six times sixteen Plus Four; or 64."
8260 PRINT "The highest two digit number in hexi is FF or fifteen times sixteen plus fifteen, or 255.";
8270 PRINT " So you see we have 156 more slots per the first two digits than with DECIMAL.": PRINT
8280 PRINT SPC( 4)"Now BINARY is Base Two so the only numerical symbols are zero and one. The"
8290 PRINT " switch is either on or off. Zero is off, one is on.";
8300 PRINT " This is the easiest system for the computer and the hardest for humans to understand.";
8310 PRINT " Obviously the digits are eaten up rather quickly.";
8320 PRINT " The first digit (from the right) is zero when off as are all digits, and one when on. (two to the zero power.) The second digit is (Two to the First power) when on (1).";
8330 PRINT " The third is (two to the second) four....eight....sixteen....thirty-two...etc. So Numbers are simply combinations of these values.";
8340 PRINT " Thus 00001010 is, Two to the first plus two to the third or"
8350 PRINT " 8+2=10 in DECIMAL.";
8360 PRINT " The largest number an eight digit binary number can": PRINT "represent is 255 (Two to the eighth minus one).";
8370 PRINT " The BINARY number 00101101 is converted to BASE-TEN as follows:"
8380 PRINT "Two to the zero power, Plus two to the second, Plus two to the third, Plus two to the fifth. Or 1+4+8+32=45 BASE-TEN.";
8390 GOSUB 8240
8400 HOME : PRINT : PRINT " Thus to convert 100 BASE-TEN to binary we factor to 64+32+4=100."
8410 PRINT "Or: 01100100 BASE-TWO.";
8420 PRINT " This system is slow and consumes space but must be": PRINT "understood if a grasp of computers is desired.";
8430 PRINT " The count then is 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111.": PRINT "1111 is then 1+2+4+8=15.";
8440 PRINT " Remember only zeros and ones are allowed in BINARY."
8450 PRINT : PRINT "There is also a system with base eight called octal which uses the first eight": PRINT "symbols before resetting. i.e. 0, 1, 2, 3, 4, 5, 6, 7 ";: PRINT " Ten BASE-EIGHT is then": PRINT "one set of eight or 8.";
8460 PRINT " We will not persue this system at this time as it is": PRINT "fading out in popularity."
8470 PRINT : PRINT : PRINT "This ends our tutorial. Return now to the main program and experiment!": PRINT : PRINT "That is the best way to learn."
8999 GOSUB 8240: PRINT CHR$(17): GOTO 20
9000 PRINT B$:EC = PEEK(222)
9015 IF EC = 69 THEN 9070
9017 IF EC = 163 THEN 3000
9020 IF EC < >16 THEN 9050
9025 SPEED= 100: VTAB 22: PRINT "NUMBERS ONLY PLEASE!": SPEED= 255: NORMAL : GOTO 100
9050 IF EC < >254 AND EC < >255 THEN PRINT : PRINT "UNANTICIPATED ERROR.": PRINT "CODE NUMBER:"EC: PRINT : PRINT "ONE MOMENT PLEASE": PRINT B$: PRINT B$: GOTO 1500
9052 NORMAL
9053 IF EC = 254 THEN 9060
9054 PRINT "DO YOU WISH TO INTERUPT ": PRINT "THIS PROGRAM? (Y/N) ";
9056 GET YN$
9057 IF YN$ < >"Y" AND YN$ < >"N" THEN PRINT : PRINT "LOCK CAPS": GOTO 9056
9058 IF YN$ = "N" THEN 150
9059 IF YN$ = "Y" THEN 4000
9060 PRINT : PRINT "THAT IS NOT A REAL NUMBER.": PRINT "PLEASE START OVER.": GOTO 1500
9070 PRINT : PRINT "NUMBER TO LARGE PLEASE ": PRINT "START OVER."
9075 PRINT B$: GOTO 1500
10000 HOME : PRINT : PRINT "ENTER "O$" NUMBER TO BE": PRINT "CONVERTED TO "P$".": PRINT "ENTER AN EIGHT DIGIT EXPRESSION PLEASE."